package com.example.seleniumtest;

import io.github.bonigarcia.wdm.WebDriverManager;
import org.apache.commons.io.FileUtils;
import org.openqa.selenium.*;
import org.openqa.selenium.chrome.ChromeDriver;
import org.openqa.selenium.chrome.ChromeOptions;

import java.io.File;
import java.io.IOException;
import java.text.SimpleDateFormat;
import java.time.Duration;
import java.util.List;
import java.util.Set;
import java.util.SimpleTimeZone;

public class example {
    static WebDriver webDriver=null;

    public static void createDriver() throws InterruptedException {
        //驱动程序自动化
        // 设置本地 ChromeDriver 路径
        System.setProperty("webdriver.chrome.driver", "C:\\学习使我快乐\\测试\\Selenium-Test\\chromedriver-win64\\chromedriver.exe");
        ChromeOptions options = new ChromeOptions();

        //允许访问所有连接
        options.addArguments("--remote-allow-origins=*");

        //设置完基础设置之后,就开始进行操作
        //1.打开对应的浏览器(首先要创建一个驱动对象)
        webDriver = new ChromeDriver(options);
        Thread.sleep(3000);
        //2.输入对应网址,这里访问百度
        webDriver.get("https://www.baidu.com");
    }

    //打开浏览器进行搜索
    public static void main(String[] args) throws InterruptedException, IOException {
        //createDriver();

//        //3.找到输入框并进行搜索操作
//        webDriver.findElement(By.xpath("//*[@id=\"kw\"]")).sendKeys("CSDN");
//        Thread.sleep(5000);
//        //4.找到搜索按钮
//        webDriver.findElement(By.xpath("//*[@id=\"su\"]")).click();
//        Thread.sleep(5000);

        test3();
        Thread.sleep(5000);
        //5.关闭浏览器
        webDriver.close();
    }

    //元素定位
    public static void test(){
        //选择器
        webDriver.findElement(By.cssSelector("#s-hotsearch-wrapper > div > a.hot-title > div > i.c-icon.hot-title-icon"));
        webDriver.findElement(By.xpath("//*[@id=\"s_new_search_guide\"]/div/a/div[2]"));
        //webDriver.findElements();//查找多个元素,返回的是一个列表
        List<WebElement> list = webDriver.findElements(By.cssSelector("#hotsearch-content-wrapper > li > a > span.title-content-title"));
        for (int i = 0; i < list.size(); i++) {
            System.out.println(list.get(i).getText());
        }
        webDriver.quit();
    }

    //操作元素
    public static void test2() throws InterruptedException {
        createDriver();
        //找到点击按钮
        WebElement webElement = webDriver.findElement(By.cssSelector("#form > input[type=hidden]:nth-child(1)"));//找到点击按钮,但是不是只有点击按钮可以点击
        webElement.click();

        //但是页面隐藏的元素是不能点击(标签中的属性是否有 hidden 关键字)
        //webDriver.findElement(By.cssSelector("#form > input[type=hidden]:nth-child(1)")).click();
        //webDriver.findElement(By.cssSelector("#su")).click();

        //找到搜索框
//        webDriver.findElement(By.cssSelector("#kw")).sendKeys("重庆邮电大学");
//        //多次使用时,要先清除,否则会进行拼接
//        Thread.sleep(3000);
//        webDriver.findElement(By.cssSelector("#kw")).clear();
//        webDriver.findElement(By.cssSelector("#kw")).sendKeys("不想上学");
//        Thread.sleep(3000);


        //获取对应地方的文本
        //String text = webDriver.findElement(By.cssSelector("#su")).getText();
        //获取对应属性的属性值(在标签里呈现为 key="value")
        //文本和属性值的区别(文本是在标签中间 >文本<)
//        String text = webDriver.findElement(By.cssSelector("#su")).getAttribute("value");
//        System.out.println(text);

//        //获取title
//        String title = webDriver.getTitle();
//        System.out.println(title);
//        //获取url
//        String url = webDriver.getCurrentUrl();
//        System.out.println("这就是一个标准的url"+url);

        }

    public static void test3() throws InterruptedException, IOException {
        createDriver();
        //设置窗口大小
//        webDriver.manage().window().minimize();//窗口最小化
//
//        webDriver.manage().window().maximize();//窗口最大化
//
//        webDriver.manage().window().fullscreen();//全屏
//
//        webDriver.manage().window().setSize(new Dimension(1624,724));

        //窗口直接操作
//        webDriver.findElement(By.cssSelector("#s-hotsearch-wrapper > div > a.hot-title > div > i.c-icon.hot-title-icon")).click();
//        webDriver.findElement(By.cssSelector("#sanRoot > header > div.container.tab-wrap_23sEv > div.c-theme-color.tabs-wrap_3Ac9n > a:nth-child(2) > span")).click();


        //窗口切换(通过切换句柄来进行切换当前操作页面)
        String curHandle = webDriver.getWindowHandle();//获取当前句柄
        System.out.println("进行点击操作前的句柄: "+curHandle);
        System.out.println("==============================================================================");
        webDriver.findElement(By.cssSelector("#s-hotsearch-wrapper > div > a.hot-title > div > i.c-icon.hot-title-icon")).click();
        Thread.sleep(3000);
        curHandle = webDriver.getWindowHandle();
        System.out.println("进行点击操作后的句柄: "+curHandle);

//        Set<String> allHandle = webDriver.getWindowHandles();//获取当前所有页面句柄
//        for (String handle : allHandle){
//            if(handle!=curHandle){
//                //切换
//                webDriver.switchTo().window(handle);
//            }
//        }
//        webDriver.findElement(By.cssSelector("#sanRoot > header > div.container.tab-wrap_23sEv > div.c-theme-color.tabs-wrap_3Ac9n > a:nth-child(2) > span")).click();

//        File file = ((TakesScreenshot)webDriver).getScreenshotAs(OutputType.FILE);
//        FileUtils.copyFile(file,new File("my1.png"));//将文件放到指定位置
//
        test4("test3");

        //webDriver.quit();

    }

    //屏幕截图进阶版
    public static void test4(String str) throws InterruptedException, IOException {
        //放到指定位置

        //定义文件夹的名称
        SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd");
        SimpleDateFormat simpleDateFormat1 = new SimpleDateFormat("HH_mm_ss");
        String dirTime = simpleDateFormat.format(System.currentTimeMillis());
        String pngTime = simpleDateFormat1.format(System.currentTimeMillis());

        //具体名字
        String fileName ="./src/test/image/"+dirTime+"/"+str+"-"+pngTime+".png";

        //屏幕截图
        File file = ((TakesScreenshot)webDriver).getScreenshotAs(OutputType.FILE);
        //放到指定路径
        FileUtils.copyFile(file,new File(fileName));//将文件放到指定位置
    }


}
